/**
 * 
 */
package com.thor.palmmall.rest.communicate;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.thor.commons.entity.BeanOperateInfo;
import com.thor.commons.entity.UCN;
import com.thor.commons.exception.ThorServiceException;
import com.thor.commons.query.QueryResult;
import com.thor.palmmall.rest.common.AUserGroupLoadParam;
import com.thor.palmmall.rest.common.AUserGroupQueryParam;

/**
 * @author NuoSa
 *
 * @since 1.0
 */
@Path("/communicate")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface ACommunicateService {

  @POST
  @Path(value = "/save")
  public String save(ACommunicate communicate, @QueryParam("") BeanOperateInfo operateInfo)
      throws ThorServiceException;

  @POST
  @Path(value = "/query")
  public QueryResult<ACommunicate> query(ACommunicateQueryParam queryParam)
      throws ThorServiceException;

  @POST
  @Path(value = "/{id}")
  public ACommunicate get(@PathParam("id") String id, AUserGroupLoadParam param)
      throws ThorServiceException;

  @DELETE
  @Path(value = "/{id}")
  public void delete(@PathParam("id") String id, @QueryParam("version") long version,
      @QueryParam("") BeanOperateInfo operateInfo) throws ThorServiceException;

  @POST
  @Path(value = "/brands")
  public QueryResult<UCN> brands(AUserGroupQueryParam queryParam) throws ThorServiceException;
  
  @POST
  @Path(value = "/positions")
  public QueryResult<UCN> positions(AUserGroupQueryParam queryParam) throws ThorServiceException;

}
